﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using Control;
using DevExpress.XtraGrid.Views.Grid;
using DevExpress.XtraGrid.Columns;
using LPV_POS.Module;
using DevExpress.XtraGrid.Views.Base;
using System.Resources;
using System.Globalization;

namespace LPV_POS.mh_pos
{
    public partial class frmDM_NHANVIEN_PHUCVU : DevExpress.XtraEditors.XtraForm
    {
        #region 1.Biến toàn cục
        CultureInfo culture;
        thuvien tv;//chứa các xử lý về CSDL
        string[] s;//mảng chuỗi chứa các parametter của procedure
        object[] o;//Mảng đối tượng chứa các giá trị tương ứng các para của store
        DataTable tb;//Bảng chứa các dữ liệu để đưa vào control Combobox
        DODM_NHANVIEN_PHUCVU T;
        DADM_NHANVIEN_PHUCVU DA;
        private bool FlagSua = false;//true:sua ; false :them moi
        private DataRow dr;//Dòng dữ liệu nhận giá trị của phiếu trong Form in lại hóa đơn
        private float GiaSP = 0;//Biến nhận giá sản phẩm khi chọn vào sản phẩm cần thêm
        #endregion

        #region "Muti language"

        private void SetLanguage_banhang(string cultureName)
        {
            try
            {
                culture = CultureInfo.CreateSpecificCulture(cultureName);
                ResourceManager rm = new ResourceManager("LPV_POS.Muti_language.MyResource", typeof(frmDM_NHANVIEN_PHUCVU).Assembly);
                lbel_tencongty.Text = rm.GetString("danhsanhnhanvien", culture);
                label7.Text = rm.GetString("nhanvien", culture);
                label4.Text = rm.GetString("ngay", culture);
                groupBox1.Text = rm.GetString("thongtinhanghoa", culture);
                label3.Text = rm.GetString("nhomhang", culture);
                label1.Text = rm.GetString("mon", culture);
                label2.Text = rm.GetString("soluong", culture);
                label5.Text = rm.GetString("sophieu", culture);
                label6.Text = rm.GetString("ban", culture);

                BtnSua.Text = rm.GetString("sua", culture);
                BtnXoa.Text = rm.GetString("xoa", culture);
                BtnLuu.Text = rm.GetString("luu", culture);
                BtnThoat.Text = rm.GetString("thoat", culture);

                this.Col_Ngay.Caption = rm.GetString("ngay", culture);
                this.Col_tenhanghoa.Caption = rm.GetString("mon", culture);
                this.Col_SoLuong.Caption = rm.GetString("soluong", culture);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString(), "Note");
            }

        }

        #endregion
       
        public frmDM_NHANVIEN_PHUCVU(DataRow Row)
        {
            dr = Row;
            DA = new DADM_NHANVIEN_PHUCVU();
            T = DA.SetData_KhoHang(-1);
            InitializeComponent();
            EventButton();
            InitControl();
            InitGrid();
            LoadDataGrid();
        }

        #region 2.Khởi tạo GridControl

        private void InitGrid()
        {
            Col_Ngay.FieldName = "NGAY_LAP";
            Col_tenhanghoa.FieldName = "TENHH";
            Col_SoLuong.FieldName = "SO_LUONG";
            GridView_Data.FocusedRowChanged+=new FocusedRowChangedEventHandler(GridView_Data_FocusedRowChanged);
        }

        private void LoadDataGrid()
        {
            DataSet ds = DA.GetData_KhoHang(txtSoPhieu.Text,CboNhanVien._GetselectedID(),NGAY_LAP.DateTime);
            
            GridControl_Data.DataSource = ds.Tables[0].DefaultView;
        }

        #endregion

        #region 3.Khởi tạo Control

        private void InitControl()
        {
            EnableControl(true);
            NGAY_LAP.DateTime = DateTime.Now;
            f_showdataoncombox(com_nhomhang, f_selectdsnhomhhforcom(), "OBJID", "OBJNAME");
            f_showdataoncombox(CboHangHoa, f_selectdshanghoa(), "OBJID", "OBJNAME");
            f_showdataoncombox(CboNhanVien, f_selectdsNhanVienchuforcom(), "OBJID", "OBJNAME");
            com_nhomhang._SetselectedID("-1");
            CboHangHoa._SetselectedID("-1");
            CboNhanVien._SetselectedID("-1");
            if (dr != null)
            {
                txtSoPhieu.Text = dr["OBJID"].ToString();
                txtTenBan.Text = dr["DM_BAN_TEN"].ToString();
            }
            CboNhanVien.SelectedIndexChanged += new EventHandler(CboNhanVien_SelectedIndexChanged);
            com_nhomhang.SelectedIndexChanged += new EventHandler(com_nhomhang_SelectedIndexChanged);
            NGAY_LAP.EditValueChanged += new EventHandler(NGAY_LAP_EditValueChanged);
        }

        void NGAY_LAP_EditValueChanged(object sender, EventArgs e)
        {
            LoadDataGrid();
        }

        private void EnableControl(bool at)
        {
            //com_nhomhang.Properties.ReadOnly = at;
            //CboHangHoa.Properties.ReadOnly = at;
            //CboNhanVien.Properties.ReadOnly = at;
            //txtSoPhieu.Properties.ReadOnly = at;
            //txtTenBan.Properties.ReadOnly = at;
            //So_Luong.Properties.ReadOnly = at;
        }

        void com_nhomhang_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (com_nhomhang._GetselectedID() + "" != "")
            {
                DataTable dt = tv.sql_SelectDataset("DM_HH", "MANHOMHH", com_nhomhang._GetselectedID()).Tables[0];
                f_showdataoncombox(CboHangHoa, dt, "OBJID", "OBJNAME");
            }
        }

        void CboNhanVien_SelectedIndexChanged(object sender, EventArgs e)
        {
            LoadDataGrid();
        }

        // hien thi ds nhom chu len combobox
        private void f_showdataoncombox(AXCombobox cb, DataTable tb, string value, string display)
        {
            cb.Datasource = tb;
            cb.DisplayField = display;
            cb.ValueFiled = value;
            cb._Init();
        }

        #endregion

        #region 4.Xử lý Nút

        private void EventButton()
        {
            //btnThem.Click += new EventHandler();
            //BtnXoa.Click += new EventHandler();
            //BtnSua.Click += new EventHandler();
            //BtnLuu.Click += new EventHandler();
            //BtnThoat.Click += new EventHandler();
        }

        void BtnThoat_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        void BtnLuu_Click(object sender, EventArgs e)
        {
            if (FlagSua == true)//truong hop sua data
            {
                if (GetData() == true)
                {
                    if (DA.Update_DanhMuc(T) == 1)
                    {
                        //Successful
                        MessageBox_LPV.Show("Lưu dữ liệu thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        EnableControl(true);
                        FlagSua = false;
                        LoadDataGrid();
                    }
                    else
                    {
                        //UnSuccessful
                        MessageBox_LPV.Show("Lưu dữ liệu không thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
            }
            else //truong hop them moi
            {
                if (GetData() == true)
                {
                    if (DA.Insert_DanhMuc(T) == 1)
                    {
                        //Successful
                        MessageBox_LPV.Show("Lưu dữ liệu thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        EnableControl(true);
                        LoadDataGrid();
                    }
                    else
                    {
                        //UnSuccessful
                        MessageBox_LPV.Show("Lưu dữ liệu không thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
            }
        }

        void BtnSua_Click(object sender, EventArgs e)
        {
            DataRow row=GridView_Data.GetDataRow(GridView_Data.FocusedRowHandle);
            if(row!=null)
            {
                if (row["OBJID"].ToString() + "" != "")
                    T.OBJID = Convert.ToInt32(row["OBJID"]);
                else
                    return;
            }
            FlagSua = true;
            EnableControl(false);
            
        }

        void BtnXoa_Click(object sender, EventArgs e)
        {
            if (MessageBox_LPV.Show("Bạn muốn xóa dữ liệu này?", "Thông báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.OK)
            { 
                //Xoa Data
                DataRow row = GridView_Data.GetDataRow(GridView_Data.FocusedRowHandle);
                if (row != null)
                {
                    if (row["OBJID"].ToString() + "" != "")
                    {
                        if (DA.Delete_DanhMuc(Convert.ToInt32(row["OBJID"]))==1)
                        {
                            LoadDataGrid();
                            MessageBox_LPV.Show("Xóa dữ liệu thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        }        
                    }
                }
                
            }
        }

        void btnThem_Click(object sender, EventArgs e)
        {
            //com_nhomhang._SetselectedID("-1");
            //CboHangHoa._SetselectedID("-1");
            //CboNhanVien._SetselectedID("-1");
            EnableControl(false);
            NGAY_LAP.DateTime = DateTime.Now;
            So_Luong.Value = 0;
            T.OBJID = 0;
            FlagSua = false;
            //txtSoPhieu.Text = "";
            //txtTenBan.Text = "";
        }

        #endregion

        #region 5.Xử lý Sự kiện

        private void GridView_Data_FocusedRowChanged(object sender, FocusedRowChangedEventArgs e)
        {
            try
            {
                //Get ID trên lưới
                DataRow row = GridView_Data.GetDataRow(GridView_Data.FocusedRowHandle);
                if (row != null)
                {
                    CboHangHoa._SetselectedID(row["MAHH"].ToString());
                    So_Luong.Value = Convert.ToDecimal(row["SO_LUONG"]);
                    CboNhanVien._SetselectedID(row["NHANVIEN_ID"].ToString());
                    //txtSoPhieu.Text = row["BH_PHIEU_MA"].ToString();    
                    //txtTenBan.Text = row["DM_BAN_TEN"].ToString();
                    NGAY_LAP.DateTime = Convert.ToDateTime(row["NGAY_LAP"]);
                    com_nhomhang._SetselectedID(row["NHOMHANG_ID"].ToString());
                }
            }
            catch (Exception)
            {
            }
        }

        #endregion

        #region 6.Khởi tạo dữ liệu để xử lý

        private bool GetData()
        {
            //1.Kiểm tra dữ liệu nhập
            if (CboHangHoa._GetselectedID() == "-1")
            {
                MessageBox_LPV.Show("Mời nhập hàng hóa", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return false;
            }
            if (CboNhanVien._GetselectedID() == "-1")
            {
                MessageBox_LPV.Show("Mời nhập Nhân viên", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return false;
            }
            if (So_Luong.Value <= 0)
            {
                MessageBox_LPV.Show("Số lượng >0", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return false;
            }
            //
            //2.Gán dữ liệu vào DO
            //T.OBJID = 0;
            T.BH_PHIEU_MA = txtSoPhieu.Text;
            T.NHANVIEN_ID = CboNhanVien._GetselectedID();
            T.NHANVIEN_TEN = CboNhanVien.Text;
            T.NGAY_LAP = NGAY_LAP.DateTime;
            T.MAHH = CboHangHoa._GetselectedID();
            T.TENHH = CboHangHoa.Text;
            T.DVT = "";
            T.SO_LUONG = Convert.ToSingle(So_Luong.Value);
            //GIA SAN PHAM
            string ID_HH = CboHangHoa._GetselectedID();
            if (ID_HH != "-1")
            {
                DataTable dt = f_selectdshanghoa();
                DataView dv = dt.DefaultView;
                dv.RowFilter = "OBJID='" + ID_HH + "'";
                DataTable dtt = dv.ToTable();
                if (dtt != null)
                {
                    if (dtt.Rows[0]["GIA1"].ToString() + "" != "")
                    {
                        GiaSP = Convert.ToSingle(dtt.Rows[0]["GIA1"].ToString());
                    }
                }
            }
            //
            T.DON_GIA = GiaSP;
            T.THANH_TIEN = T.SO_LUONG * T.DON_GIA;
            T.DM_BAN_MA = dr["DM_BAN_MA"].ToString();
            T.DM_BAN_TEN = dr["DM_BAN_TEN"].ToString();
            T.GHI_CHU = "";
            T.NHOMHANG_ID = com_nhomhang._GetselectedID();
            //T.NHOMHANG_TEN = com_nhomhang.Text;
            //
            return true;
        }

        #endregion

        #region 7.Xử lý Database

        // select danh sach don hang hoa
        private DataTable f_selectdshanghoa()
        {
            tv = new thuvien();
            s = new string[] { "@flag", "@choose" };
            o = new object[] { 1, 1 };
            tb = tv.SP_SelectDataTable("sp_mh_dmhanghoa", s, o);
            DataView dv_temp = tb.DefaultView;
            dv_temp.Sort = "OBJID DESC";

            DataRow myNewRow;
            myNewRow = tb.NewRow();
            myNewRow["OBJID"] = "-1";
            myNewRow["OBJNAME"] = "--- Chọn hàng hóa ---";
            tb.Rows.Add(myNewRow);
            //  tb.Rows.Add(n);
            tb.Columns.Add("STT", typeof(int));
            for (int i = 0; i < tb.Rows.Count; i++)
                tb.Rows[i]["STT"] = i + 1;

            //DataView dv_temp1 = tb.DefaultView;
            dv_temp.Sort = "STT DESC";

            return dv_temp.ToTable();
        }

        // select danh sach nhom hang hoa
        private DataTable f_selectdsnhomhhforcom()
        {
            tv = new thuvien();
            s = new string[] { "@flag", "@choose" };
            o = new object[] { 1, 2 };
            tb = tv.SP_SelectDataTable("sp_mh_dmhanghoa", s, o);
            DataView dv_temp = tb.DefaultView;
            dv_temp.Sort = "OBJID DESC";
            DataRow myNewRow;
            myNewRow = tb.NewRow();
            myNewRow["OBJID"] = "-1";
            myNewRow["OBJNAME"] = "--- Chọn nhóm hàng ---";
            tb.Rows.Add(myNewRow);
            //  tb.Rows.Add(n);
            tb.Columns.Add("STT", typeof(int));
            for (int i = 0; i < tb.Rows.Count; i++)
                tb.Rows[i]["STT"] = i + 1;

            //DataView dv_temp1 = tb.DefaultView;
            dv_temp.Sort = "STT DESC";
            return dv_temp.ToTable();
        }

        // select danh sach don vi tinh
        private DataTable f_selectdsDVTchuforcom()
        {
            tv = new thuvien();
            s = new string[] { "@flag", "@choose" };
            o = new object[] { 1, 4 };
            tb = tv.SP_SelectDataTable("sp_mh_dmhanghoa", s, o);
            DataView dv_temp = tb.DefaultView;
            dv_temp.Sort = "OBJID DESC";
            DataRow myNewRow;
            myNewRow = tb.NewRow();
            myNewRow["OBJID"] = "-1";
            myNewRow["OBJNAME"] = "--- Chọn ĐVT ---";
            tb.Rows.Add(myNewRow);
            //  tb.Rows.Add(n);
            tb.Columns.Add("STT", typeof(int));
            for (int i = 0; i < tb.Rows.Count; i++)
                tb.Rows[i]["STT"] = i + 1;

            //DataView dv_temp1 = tb.DefaultView;
            dv_temp.Sort = "STT DESC";
            return dv_temp.ToTable();
        }

        // select danh sach don vi tinh
        private DataTable f_selectdsNhanVienchuforcom()
        {
            tv = new thuvien();
            s = new string[] { "@flag", "@choose" };
            o = new object[] { 1, 4 };
            tb = tv.SP_SelectDataTable("sp_mh_dmnhanvien", s, o);
            DataView dv_temp = tb.DefaultView;
            dv_temp.Sort = "OBJID DESC";
            DataRow myNewRow;
            myNewRow = tb.NewRow();
            myNewRow["OBJID"] = "-1";
            myNewRow["OBJNAME"] = "--- Chọn nhân viên ---";
            tb.Rows.Add(myNewRow);
            //  tb.Rows.Add(n);
            tb.Columns.Add("STT", typeof(int));
            for (int i = 0; i < tb.Rows.Count; i++)
                tb.Rows[i]["STT"] = i + 1;

            //DataView dv_temp1 = tb.DefaultView;
            dv_temp.Sort = "STT DESC";
            return dv_temp.ToTable();
        }

        #endregion

        private void frmDM_NHANVIEN_PHUCVU_Load(object sender, EventArgs e)
        {
            cpublic ocpublic = new cpublic();
            string str_lang = ocpublic.Registry_Get("mh_main_lang");
            if (str_lang == "")
                str_lang = "vi-VN";
            SetLanguage_banhang(str_lang);
        }

    }

    public class DODM_NHANVIEN_PHUCVU
    {
        public int OBJID;
        public string BH_PHIEU_MA;
        public string NHANVIEN_ID;
        public string NHANVIEN_TEN;
        public DateTime NGAY_LAP;
        public string MAHH;
        public string TENHH;
        public string DVT;
        public float SO_LUONG;
        public float DON_GIA;
        public float THANH_TIEN;
        public string DM_BAN_MA;
        public string DM_BAN_TEN;
        public string GHI_CHU;
        public string NHOMHANG_ID;
        //public string NHOMHANG_TEN;
        public DODM_NHANVIEN_PHUCVU() { }
    }

    public class DADM_NHANVIEN_PHUCVU
    {
        thuvien tv;
        public DADM_NHANVIEN_PHUCVU()
        {
            tv = new thuvien();
        }

        public int Insert_DanhMuc(DODM_NHANVIEN_PHUCVU T)
        {
            return Execute_Query(T, 1);
        }

        public int Update_DanhMuc(DODM_NHANVIEN_PHUCVU T)
        {
            return Execute_Query(T, 2);
        }

        public int Delete_DanhMuc(int IDKey)
        {
            string sql = "delete from DM_NHANVIEN_PHUCVU where OBJID=" + IDKey;
            return tv.SP_Update("SP_EXECUTESQL", new string[] { "@sSQL" }, new object[] { sql });
            //return tv.ExcuteQuery(sql);
        }

        #region 1.Thực thi store procedure

        /// <summary>
        /// Thực thi câu store
        /// </summary>
        /// <param name="T">Đối tượng Kho</param>
        /// <param name="choice">1:Thêm mới ; 2:Cập nhật</param>
        /// <returns></returns>
        public int Execute_Query(DODM_NHANVIEN_PHUCVU T, int choice)
        {
            string[] s;
            object[] o;
            s = new string[] { "@flag", "@OBJID", "@BH_PHIEU_MA", "@NHANVIEN_ID", "@NHANVIEN_TEN", "@NGAY_LAP", "@MAHH", "@TENHH", "@DVT", "@SO_LUONG", "@DON_GIA", "@THANH_TIEN", "@DM_BAN_MA", "@DM_BAN_TEN","@GHI_CHU","@NHOMHANG_ID"};
            o = new object[] { choice, T.OBJID, T.BH_PHIEU_MA, T.NHANVIEN_ID, T.NHANVIEN_TEN, T.NGAY_LAP, T.MAHH, T.TENHH, T.DVT, T.SO_LUONG, T.DON_GIA, T.THANH_TIEN, T.DM_BAN_MA, T.DM_BAN_TEN,T.GHI_CHU,T.NHOMHANG_ID};
            int ketqua = tv.SP_Update("sp_DM_NHANVIEN_PHUCVU", s, o);
            return ketqua;
        }

        #endregion

        #region 2.Set + Get Data

        public DODM_NHANVIEN_PHUCVU SetData_KhoHang(int IDKey)
        {
            DODM_NHANVIEN_PHUCVU T = new DODM_NHANVIEN_PHUCVU();
            DataSet ds = tv.sql_SelectDataset("DM_NHANVIEN_PHUCVU", "OBJID", IDKey);
            if (ds != null)
            {
                foreach (DataRow dr in ds.Tables[0].Rows)
                {
                    T.OBJID = Convert.ToInt32(dr[0]);
                    T.BH_PHIEU_MA = dr[1].ToString();
                    T.NHANVIEN_ID = dr[2].ToString();
                    T.NHANVIEN_TEN = dr[3].ToString();
                    if (dr[4].ToString() == "")
                        T.NGAY_LAP = Convert.ToDateTime("01/01/1800");
                    else
                        T.NGAY_LAP = Convert.ToDateTime(dr[4]);
                    T.MAHH = dr[5].ToString();
                    T.TENHH = dr[6].ToString();
                    T.DVT = dr[7].ToString();
                    T.SO_LUONG = Convert.ToSingle(dr[8]);
                    T.DON_GIA = Convert.ToSingle(dr[9]);
                    T.THANH_TIEN = Convert.ToSingle(dr[10]);
                    T.DM_BAN_MA = dr[11].ToString();
                    T.DM_BAN_TEN = dr[12].ToString();
                    T.GHI_CHU = dr[13].ToString();
                    T.NHOMHANG_ID = dr[14].ToString();
                   // T.NHOMHANG_TEN = dr[15].ToString();
                }
            }
            return T;
        }

        public DataSet GetData_KhoHang
           (
           string ID_PHB,
            string ID_NHANVIEN,
            DateTime NGAY
           )
        {
            string[] s;
            object[] o;
            s = new string[] { "@flag", "@OBJID", "@BH_PHIEU_MA", "@NHANVIEN_ID", "@NHANVIEN_TEN", "@NGAY_LAP", "@MAHH", "@TENHH", "@DVT", "@SO_LUONG", "@DON_GIA", "@THANH_TIEN", "@DM_BAN_MA", "@DM_BAN_TEN","@GHI_CHU",@"NHOMHANG_ID"};
            o = new object[] { 4, "", ID_PHB, ID_NHANVIEN, "", NGAY, "", "", "", "", "", "", "", "", "","","","",""};
            return tv.SP_SelectDataset("sp_DM_NHANVIEN_PHUCVU", s, o);
        }

        #endregion

    }

}